using UwinEducation.Application.Dtos;
using UwinEducation.Shared.Models;

namespace UwinEducation.Application.Common.Interfaces
{
    /// <summary>
    /// 学生缴费服务接口
    /// </summary>
    public interface IStudentPaymentService
    {
        /// <summary>
        /// 获取学生缴费分页列表
        /// </summary>
        Task<PagedResult<StudentPaymentDto>> GetPagedListAsync(StudentPaymentPageRequest pageRequest);

        /// <summary>
        /// 获取学生缴费详情
        /// </summary>
        Task<StudentPaymentDto> GetByIdAsync(Guid id);

        /// <summary>
        /// 创建学生缴费
        /// </summary>
        Task<StudentPaymentDto> CreateAsync(CreateStudentPaymentDto input);

        /// <summary>
        /// 更新学生缴费
        /// </summary>
        Task<StudentPaymentDto> UpdateAsync(UpdateStudentPaymentDto input);

        /// <summary>
        /// 删除学生缴费
        /// </summary>
        Task DeleteAsync(Guid id);

        /// <summary>
        /// 获取学生的所有缴费记录
        /// </summary>
        Task<List<StudentPaymentDto>> GetByStudentIdAsync(Guid studentId);

        /// <summary>
        /// 批量创建学生缴费
        /// </summary>
        Task<List<StudentPaymentDto>> CreateRangeAsync(List<CreateStudentPaymentDto> inputs);

        Task DeleteByStudentIdAndTeacherScheduleIdAsync(Guid studentId, Guid teacherScheduleId);
    }
}